home *** CD-ROM | disk | FTP | other *** search
-
- NETINTRO(4) UNIX Programmer's Manual NETINTRO(4)
-
- NNAAMMEE
- nneettwwoorrkkiinngg - introduction to networking facilities
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssyyss//ssoocckkeett..hh>>
- ##iinncclluuddee <<nneett//rroouuttee..hh>>
- ##iinncclluuddee <<nneett//iiff..hh>>
-
- DDEESSCCRRIIPPTTIIOONN
- This section is a general introduction to the networking facilities
- available in the system. Documentation in this part of section 4 is bro-
- ken up into three areas: _p_r_o_t_o_c_o_l _f_a_m_i_l_i_e_s (domains), _p_r_o_t_o_c_o_l_s, and
- _n_e_t_w_o_r_k _i_n_t_e_r_f_a_c_e_s.
-
- All network protocols are associated with a specific _p_r_o_t_o_c_o_l _f_a_m_i_l_y. A
- protocol family provides basic services to the protocol implementation to
- allow it to function within a specific network environment. These ser-
- vices may include packet fragmentation and reassembly, routing, address-
- ing, and basic transport. A protocol family may support multiple methods
- of addressing, though the current protocol implementations do not. A
- protocol family is normally comprised of a number of protocols, one per
- socket(2) type. It is not required that a protocol family support all
- socket types. A protocol family may contain multiple protocols support-
- ing the same socket abstraction.
-
- A protocol supports one of the socket abstractions detailed in socket(2).
- A specific protocol may be accessed either by creating a socket of the
- appropriate type and protocol family, or by requesting the protocol ex-
- plicitly when creating a socket. Protocols normally accept only one type
- of address format, usually determined by the addressing structure inher-
- ent in the design of the protocol family/network architecture. Certain
- semantics of the basic socket abstractions are protocol specific. All
- protocols are expected to support the basic model for their particular
- socket type, but may, in addition, provide non-standard facilities or ex-
- tensions to a mechanism. For example, a protocol supporting the
- SOCK_STREAM abstraction may allow more than one byte of out-of-band data
- to be transmitted per out-of-band message.
-
- A network interface is similar to a device interface. Network interfaces
- comprise the lowest layer of the networking subsystem, interacting with
- the actual transport hardware. An interface may support one or more pro-
- tocol families and/or address formats. The SYNOPSIS section of each net-
- work interface entry gives a sample specification of the related drivers
- for use in providing a system description to the config(8) program. The
- DIAGNOSTICS section lists messages which may appear on the console and/or
- in the system error log, _/_v_a_r_/_l_o_g_/_m_e_s_s_a_g_e_s (see syslogd(8)), due to er-
- rors in device operation.
-
- PPRROOTTOOCCOOLLSS
- The system currently supports the Internet protocols, the Xerox Network
- Systems(tm) protocols, and some of the ISO OSI protocols. Raw socket in-
- terfaces are provided to the IP protocol layer of the Internet, and to
- the IDP protocol of Xerox NS. Consult the appropriate manual pages in
- this section for more information regarding the support for each protocol
- family.
-
- AADDDDRREESSSSIINNGG
- Associated with each protocol family is an address format. All network
- address adhere to a general structure, called a sockaddr, described be-
- low. However, each protocol imposes finer and more specific structure,
- generally renaming the variant, which is discussed in the protocol family
- manual page alluded to above.
-
- struct sockaddr {
- u_char sa_len;
- u_char sa_family;
- char sa_data[14];
- };
-
- The field _s_a___l_e_n contains the total length of the of the structure, which
- may exceed 16 bytes. The following address values for _s_a___f_a_m_i_l_y are
- known to the system (and additional formats are defined for possible fu-
- ture implementation):
-
- #define AF_UNIX 1 /* local to host (pipes, portals) */
- #define AF_INET 2 /* internetwork: UDP, TCP, etc. */
- #define AF_NS 6 /* Xerox NS protocols */
- #define AF_CCITT 10 /* CCITT protocols, X.25 etc */
- #define AF_HYLINK 15 /* NSC Hyperchannel */
- #define AF_ISO 18 /* ISO protocols */
-
- RROOUUTTIINNGG
- UNIX provides some packet routing facilities. The kernel maintains a
- routing information database, which is used in selecting the appropriate
- network interface when transmitting packets.
-
- A user process (or possibly multiple co-operating processes) maintains
- this database by sending messages over a special kind of socket. This
- supplants fixed size ioctl(2) used in earlier releases.
-
- This facility is described in route(4).
-
- IINNTTEERRFFAACCEESS
- Each network interface in a system corresponds to a path through which
- messages may be sent and received. A network interface usually has a
- hardware device associated with it, though certain interfaces such as the
- loopback interface, lo(4), do not.
-
- The following ioctl calls may be used to manipulate network interfaces.
- The ioctl is made on a socket (typically of type SOCK_DGRAM) in the de-
- sired domain. Most of the requests supported in earlier releases take an
- _i_f_r_e_q structure as its parameter. This structure has the form
-
- struct ifreq {
- #define IFNAMSIZ 16
- char ifr_name[IFNAMSIZE]; /* if name, e.g. "en0" */
- union {
- struct sockaddr ifru_addr;
- struct sockaddr ifru_dstaddr;
- struct sockaddr ifru_broadaddr;
- short ifru_flags;
- int ifru_metric;
- caddr_t ifru_data;
- } ifr_ifru;
- #define ifr_addr ifr_ifru.ifru_addr /* address */
- #define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */
- #define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
- #define ifr_flags ifr_ifru.ifru_flags /* flags */
- #define ifr_metric ifr_ifru.ifru_metric /* metric */
- #define ifr_data ifr_ifru.ifru_data /* for use by interface */
- };
-
- Calls which are now deprecated are:
-
- SIOCSIFADDR Set interface address for protocol family. Following the
- address assignment, the ``initialization'' routine for
-
-
- the interface is called.
-
- SIOCSIFDSTADDR Set point to point address for protocol family and inter-
- face.
-
- SIOCSIFBRDADDR Set broadcast address for protocol family and interface.
-
- Ioctl requests to obtain addresses and requests both to set and retrieve
- other data are still fully supported and use the _i_f_r_e_q structure:
-
- SIOCGIFADDR Get interface address for protocol family.
-
- SIOCGIFDSTADDR Get point to point address for protocol family and inter-
- face.
-
- SIOCGIFBRDADDR Get broadcast address for protocol family and interface.
-
- SIOCSIFFLAGS Set interface flags field. If the interface is marked
- down, any processes currently routing packets through the
- interface are notified; some interfaces may be reset so
- that incoming packets are no longer received. When
- marked up again, the interface is reinitialized.
-
- SIOCGIFFLAGS Get interface flags.
-
- SIOCSIFMETRIC Set interface routing metric. The metric is used only by
- user-level routers.
-
- SIOCGIFMETRIC Get interface metric.
-
- There are two requests that make use of a new structure:
-
- SIOCAIFADDR An interface may have more than one address associated
- with it in some protocols. This request provides a means
- to add additional addresses (or modify characteristics of
- the primary address if the default address for the ad-
- dress family is specified). Rather than making separate
- calls to set destination or broadcast addresses, or net-
- work masks (now an integral feature of multiple proto-
- cols) a separate structure is used to specify all three
- facets simultaneously (see below). One would use a
- slightly tailored version of this struct specific to each
- family (replacing each sockaddr by one of the family-spe-
- cific type). Where the sockaddr itself is larger than
- the default size, one needs to modify the ioctl identifi-
- er itself to include the total size, as described in
- ioctl.
-
- SIOCDIFADDR This requests deletes the specified address from the list
- associated with an interface. It also uses the
- _i_f___a_l_i_a_s_r_e_q structure to allow for the possibility of
- protocols allowing multiple masks or destination address-
- es, and also adopts the convention that specification of
- the default address means to delete the first address for
- the interface belonging to the address family in which
- the original socket was opened.
-
- SIOCGIFCONF Get interface configuration list. This request takes an
- _i_f_c_o_n_f structure (see below) as a value-result parameter.
- The _i_f_c___l_e_n field should be initially set to the size of
- the buffer pointed to by _i_f_c___b_u_f. On return it will con-
- tain the length, in bytes, of the configuration list.
-
- /*
- * Structure used in SIOCAIFCONF request.
- */
- struct ifaliasreq {
- char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */
- struct sockaddr ifra_addr;
- struct sockaddr ifra_broadaddr;
- struct sockaddr ifra_mask;
- };
-
- /*
- * Structure used in SIOCGIFCONF request.
- * Used to retrieve interface configuration
- * for machine (useful for programs which
- * must know all networks accessible).
- */
- struct ifconf {
- int ifc_len; /* size of associated buffer */
- union {
- caddr_t ifcu_buf;
- struct ifreq *ifcu_req;
- } ifc_ifcu;
- #define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */
- #define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */
- };
-
- SSEEEE AALLSSOO
- socket(2), ioctl(2), intro(4), config(8), routed(8)
-
- HHIISSTTOORRYY
- The nneettiinnttrroo manual appeared in 4.3BSD-Tahoe.
-
- 4.2 Berkeley Distribution November 30, 1993 4
-